1. Field of the Invention
The present invention is related to the field of communications over networks, and more specifically to devices, software and methods for allocating jitter buffer memory in a network communication device.
2. Description of the Related Art
Networks are used increasingly for communications, such as voice communications. Communications through networks take place according to protocols, such as the Internet Protocol (IP). If the communication is for voice, then a Voice over Internet Protocol (VoIP) is used.
Referring to FIG. 1, an arrangement is shown for a network communication scheme. A transmitter 20 establishes a connection, such as a VoIP connection, with a receiver 30, that includes a jitter buffer 32. The connection is through a network 40, which is also known as an IP cloud 40. For this arrangement, transmitter 20 is considered to be a network endpoint from the point of view of receiver 30.
Transmitter 20 decomposes the input signal in small parts, and codes the parts in sequential packets 24. Coded packets 24 are designated P1, P2, P3 and P4, to indicate their relative sequence. Coded packets 24 are input in IP cloud 40.
The coded packets travel though the IP cloud 40 as traveling packets 44. Traveling packets 44 are designated T1, T2, T3 and T4, corresponding in content to P1, P2, P3 and P4 respectively. An important aspect of IP cloud 40 is that, even though coded packets 24 were received from a single source and in a certain sequence, traveling packets 44 may travel through different paths of IP cloud 40, and with differential delays between them.
Indeed, traveling packets 44 may arrive at a different order in jitter buffer 32, as received packets 54. Received packets 54 are designated R1, R2, R3 and R4, corresponding in content to P1, P2, P3 and P4 respectively. It will be observed that received packets R1, R2 were delayed more than received packets R3, R4, and thus appear after them.
Receiver 30 reconstructs the original signal by playing out the received packets 54 as output packets 64. Output packets 64 are designated O1, O2, O3 and O4, corresponding in content to packets P1, P2, P3 and P4 respectively. Since the played out sequence is the same as the input sequence, the signal is reconstructed faithfully.
In reviewing this scheme, jitter buffer 32 is necessary because of the uncertainty in travel time of travel packets T1, T2, T3, T4 44 through IP cloud 40. Indeed, if there were a direct communication line, the packets would be guaranteed to arrive in the original sequence, and each with the same delay as the others.
Jitter buffer 32 works by having a memory to store packets as they are received, until they are played out in the originally intended sequence. The larger the memory, the larger the probability that, regardless of differential delays by IP cloud 40, a packet will have been received by the time it is due to be played out. This improves quality of service, and is especially important for voice communications.
Chips are being created for network communications. These chips have high processing power, but their cost is driven by the amount of memory they are associated with. In IP telephony applications, a relatively large portion of this memory is allocated for jitter buffer storage. For example, enough storage is allocated for 200 msec of conversation, for each VoIP connection (also known as channel) that is established.